package com.xyrl.project.common.store.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xyrl.project.common.csr.vo.CsrApplyVo;
import com.xyrl.project.common.csr.vo.CsrRegisterVo;
import com.xyrl.project.common.store.entity.Store;
import com.xyrl.project.common.store.entity.StoreLegal;
import com.xyrl.project.common.store.enu.StoreStatus;
import com.xyrl.project.common.store.vo.StoreAuthVo;
import com.xyrl.project.common.store.vo.StoreSalesVo;
import com.xyrl.project.common.store.vo.StoreVo;

import java.util.List;

/**
 * @author 徐恩源
 * @version 1.0
 * @className StoreService.java
 * @company 重庆星纭融链科技公司
 * @date 2019-12-30 10:32:48
 * @Description 商户service
 */
public interface StoreService extends IService<Store> {
    /**
     * 根据客户id查询门店信息
     *
     * @author 徐恩源
     * @date 2019-12-30 19:49:30
     */
    StoreVo findByCsrUserId(long csrUserId);

    /**
     * 客户经理对商户注册
     *
     * @param registerVo
     * @param salesmanId
     * @author 徐恩源
     * @date 2019-12-30 19:12:23
     */
    Store register(CsrRegisterVo registerVo, Long salesmanId);

    /**
     * 检查手机号是否可以注册
     *
     * @param mobile
     * @param salesId
     * @author 徐恩源
     * @date 2019-12-31 16:33:10
     */
    void checkMobile(String mobile, Long salesId);

    /**
     * 修改店铺头像
     * @param userId 用户id
     * @param storeId 门店id
     * @param path 头像路径
     * @return
     */
    String updateStoreLogo(Long userId,Long storeId,String path);

    /**
     * 分页查询商户
     *
     * @param storeStatus
     * @param salesId
     * @param search
     * @param isDesc
     * @author 徐恩源
     * @date 2020-01-03 13:44:56
     */
    Page<StoreVo> findPage(Page<StoreVo> page, StoreStatus storeStatus, long salesId, String search, Boolean isDesc);

    /**
     * 根据商户id查询新
     *
     * @param storeId
     * @author 徐恩源
     * @date 2020-01-05 11:47:07
     */
    StoreVo findStoreVoById(long storeId);

    /**
     * 查询“我的模块”数据
     *
     * @param csrUserId
     * @author 徐恩源
     * @date 2020-01-05 13:53:26
     */
    StoreSalesVo findStoreSalesVoById(long csrUserId);



    /**
     * 申请（进货商授信、供货商收款）
     *
     * @param csrUserId
     * @author 徐恩源
     * @date 2020-01-05 14:31:04
     */
    long applyStore(long csrUserId, CsrApplyVo applyVo);

    /**
     * 获取商户信息
     *
     * @param id
     * @author 徐恩源
     * @date 2020-01-06 17:15:34
     */
    Store findById(Long id);

    /**
     * 检查客户经理是否有该商户
     * @param id
     * @param salesId
     * @author 徐恩源
     * @date 2020-01-06 17:14:34
     * @return 不存在返回空
     */
    Store checkStoreBySalesId(Long id, Long salesId);
    /**
     * 检查是否有操作商户权限
     * @author 徐恩源
     * @date 2020-01-13 10:35:52
     * @param id
     * @param salesId
     * @return 不存在会抛出IllegalArgumentException异常
     */
    Store checkOpStorePermission(Long id, Long salesId);

    /**
     * 保存商户
     *
     * @param storeVo
     * @param saleId
     * @author 徐恩源
     * @date 2020-01-06 17:22:21
     */
    void updateStore(StoreVo storeVo, Long saleId);

    /**
     * 商户是否实名认证
     *
     * @param storeId 店铺id
     * @return
     */
    boolean isPersonVerify(Long storeId);

}
